package Construibles;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import Excepciones.DineroInsuficiente;
import Juego.Jugador;
import Juego.SerializablePropia;
import MapaStuff.Hectarea;
import MapaStuff.SuperficieAgua;
import MapaStuff.SuperficiePlana;

public abstract class ConstruibleFisico implements Construible{

	protected Hectarea hectareaActual;
	protected int vida=100;
	protected boolean estaDestruido = false;
	protected int indiceReparacion;
	protected int costoDeConstruccion;
	
	public ConstruibleFisico(){
	}
	
	
	public void daniar(int danio){
		vida -= danio;
		if (vida <= 0) estaDestruido = true;
		if (estaDestruido){
			vida = 0;
		}
	}
	
	public boolean estaDestruido(){
		return estaDestruido;
	}
	
	public void sanar() {
		vida += indiceReparacion;
		if (vida > 100) vida = 100;
		if (vida>0) estaDestruido=false;
	}
	
	public int vida() {
		return vida;
	}
	
	public void agregarHectarea(Hectarea hectareaUbicacion){
		hectareaActual = hectareaUbicacion;
	}
	
	public Hectarea hectarea(){
		return this.hectareaActual;
	}
	

	public void descontarDinero(Jugador jugador) throws DineroInsuficiente {
		jugador.descontarDinero(costoDeConstruccion);
		
	}

	public Element serializar(Document doc) {
		Element eleConstruible=doc.createElement("Construible");
		eleConstruible.setAttribute("vida", Integer.toString(vida));
		eleConstruible.setAttribute("estaDestruido",Boolean.toString(estaDestruido));
		return eleConstruible;
	}
	
	protected static void hiratarElementosHeredados(ConstruibleFisico con,Node node){
		Element eleConstruible=(Element) node;
		con.vida=Integer.parseInt(eleConstruible.getAttribute("vida"));
		con.estaDestruido=Boolean.parseBoolean(eleConstruible.getAttribute("estaDestruido"));
		
	}
	
	public String informacion(){
		return "";
	}
	
	public  static ConstruibleFisico hidratar(Node construible){
		return (ConstruibleFisico) SerializablePropia.hidratar(construible);
	}
	
}
 